#include <iostream>
#include <functional>
// #include "my_list.hpp"
#include "my_list_version.hpp"

using namespace std;
using namespace ns_list;

// int main()
// {
//     list<int> l;
//     int data;
//     std::cout << "输入初始化数据:(0结束)" << endl;

//     while (std::cin >> data)
//     {
//         if(!data)break;
//         l.push_back(data);
//     }

//     bool running = true;
//     while (running)
//     {
//         std::cout << "请选择相应的操作# 插入insert(pos,value),删除delete(value),查找search(val),遍历traverse(),退出quit" << std::endl;
//         std::string command;
//         cin >> command;

//         if (command == "i")
//         {
//             std::cout << "请输入位置和数值:" << std::endl;
//             int pos, val;
//             cin >> pos >> val;
//             l.insert(l.find_order(pos), val);
//         }
//         else if (command == "d")
//         {
//             std::cout << "请输入要删除的数值:" << std::endl;
//             int val;
//             cin >> val;
//             l.erase(l.find(val));
//         }
//         else if (command == "s")
//         {
//             std::cout << "请输入要查找的数值:" << std::endl;
//             int val;
//             cin >> val;
//             int count=0;
//             if (l.find(val,&count) != l.end())
//             {
//                 std::cout << "找到了,秩为:"<<count << std::endl;
//             }
//             else
//             {
//                 std::cout << "未找到" << std::endl;
//             }
//         }
//         else if (command == "t")
//         {
//             for (auto x : l)
//             {
//                 std::cout << x << " ";
//             }
//             std::cout << std::endl;
//         }
//         else if (command == "q")
//         {
//             running = false;
//         }
//         else
//         {
//             std::cout << "无效的命令，请重新输入" << std::endl;
//         }
//     }

//     return 0;
// }

int main()
{
    my_list l;
        int data;
    std::cout << "输入初始化数据:(0结束)" << endl;

    while (std::cin >> data)
    {
        if(!data)break;
        l.Push_Back(data);
    }

    bool running = true;
    while (running)
    {
        std::cout << "请选择相应的操作# 输入首字母即可\t插入insert(pos,value),删除delete(value),查找search(val),遍历traverse(),退出quit" << std::endl;
        std::string command;
        cin >> command;

        if (command == "i")
        {
            std::cout << "请输入位置和数值:" << std::endl;
            int pos, val;
            cin >> pos >> val;
            l.InsertAfter(pos,val);
        }
        else if (command == "d")
        {
            std::cout << "请输入要删除的数值:" << std::endl;
            int val;
            cin >> val;
            l.Erase(val);
        }
        else if (command == "s")
        {
            std::cout << "请输入要查找的数值:" << std::endl;
            int val;
            cin >> val;
            int count=0;
            l.Search(val);
        }
        else if (command == "t")
        {
           l.PrintList();
        }
        else if (command == "q")
        {
            running = false;
        }
        else
        {
            std::cout << "无效的命令，请重新输入" << std::endl;
        }
    }
}